/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ImageFileSelector;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import HelperClasses.RandomFileName;
import gui.AdminAddRestaurantGui;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

/**
 *
 * 
 */

// μέθοδος επέκτασης του Jpanel ώστενα περιλαμβάνει εικόνα
public class JPanelExtentedImage extends JPanel {
    // εδώ διατηρείται η εικόνα του panel
    static public ImageIcon ImageFileIcon ;
    static public String ImageFilePath ;

    private ImageIcon image;
       
    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
      
        //διαβάζει την εικόνα
        image = ImageFileIcon; 
        
        //δείχνει την εικόνα
        image.paintIcon(this, g, 0, 0);
    }
    
    // μέθοδος αλλαγής κλίμακας εικόνας - αλλαγμένο για να προσαρμόζεται στο panel
    public static void scaleAndStore(String filePathImageSource, double panelX, double panelY, ImageObserver o) {
        
        Image src= new ImageIcon(filePathImageSource).getImage();
        
        //double scale = size/src.getWidth(o);     
        double srcX = (double) src.getWidth(o);
        double srcY =(double) src.getHeight(o);
        
        double scale ;

        scale = panelX/srcX;
        if (scale>1){
            scale = 1/scale;
        }
        
        int w = (int)(scale * srcX);
        int h = (int)(scale * srcY);
        
        if (h > panelY){
            scale= panelY / (double) h;
            w = (int)(scale * w);
            h = (int)(scale * h);
        }
                
        int type = BufferedImage.TYPE_INT_RGB;
        BufferedImage dst = new BufferedImage(w, h, type);
        Graphics2D g2 = dst.createGraphics();
        g2.drawImage(src, 0, 0, w, h, o);
        g2.dispose();
        
        // θέτω την υπο κλίμακα φωτογραφία στην στατική μεταβλητή 
        ImageFileIcon=null;
        ImageFileIcon = new ImageIcon(dst);
        // σώζω την υπο κλίμακα φωτογραφία με τυχαίο όνομα
        ImageFilePath = "SavedPhotos/" + RandomFileName.getFileName();
        //ImageFilePath = "lean1";
        // εγγραφή στον δίσκο
        try {
            ImageIO.write(dst, "jpg", new File(ImageFilePath));
        } catch (IOException ex) {
            Logger.getLogger(JPanelExtentedImage.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public static void deleteFileInImageFilePath(){
        if (!ImageFilePath.isEmpty()){
            File imageFile = new File(ImageFilePath);
            imageFile.delete();
        }
        ImageFilePath="";
    }
}